package leecode

import "sort"

func deleteAndEarn(nums []int) (result int) {
	hashMap := make(map[int]int) //key为数组中的数字 , value为出现的次数
	sort.Ints(nums)
	index := len(nums) - 1
	maxNum := nums[index] //最大数 , 即第一个需要删除的数

	for i := 0; i < len(nums); i++ {
		hashMap[nums[i]]++
	}
	for len(hashMap) > 0 {
		if _, ok := hashMap[maxNum]; ok {
			hashMap[maxNum]--
			result += maxNum
			delete(hashMap, maxNum-1)
			delete(hashMap, maxNum+1)
		}
		if hashMap[maxNum] == 0 {
			delete(hashMap, maxNum)
			index--
			maxNum = nums[index]
		}
	}
	return
}
